package jsu.blogger.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegularUtil {
    // 正则表达式
    private static String fileNamesRegex= "data-custom=\"[^\"]*storageFileName=([^\"]*)\"";
    /**
     * 提取 HTML 中所有 img 标签的 storageFileName 属性值
     * @param htmlContent 包含 img 标签的 HTML 字符串
     * @return 包含所有提取的 storageFileName 值的 List，如果未找到则返回空 List
     */
    public static List<String> extractStorageFileNames(String htmlContent) {
        // 创建一个 List 来存储提取到的文件名
        List<String> storageFileNames = new ArrayList<>();
        // 创建 Pattern 对象
        Pattern pattern = Pattern.compile(fileNamesRegex);
        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(htmlContent);
        // 查找所有匹配项
        while (matcher.find()) {
            // 获取每个匹配项的 storageFileName
            storageFileNames.add(matcher.group(1));
        }
        // 返回提取到的所有文件名，若未找到则返回空 List
        return storageFileNames;
    }

    public static List<String> splitFileName(String fileName) {
        // 使用正则表达式来分割文件名
        String[] parts = fileName.split("_");
        // 如果没有下划线，返回整个文件名作为后部分
        if (parts.length == 1) {
            List<String> result = new ArrayList<>();
            result.add("");  // 前部分为空
            result.add(fileName);  // 后部分为整个文件名
            return result;  // 返回结果
        }
        // 获取前部分（由 _ 连接的部分）
        String[] frontParts = Arrays.copyOfRange(parts, 0, parts.length - 1);
        String frontPart = String.join("_", frontParts);  // 连接前部分
        // 获取后部分（最后一部分）
        String backPart = parts[parts.length - 1];
        // 返回包含两个部分的 List
        List<String> result = new ArrayList<>();
        result.add(frontPart);
        result.add(backPart);
        return result;
    }
}
